/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

package br.ufrj.dcc.comp2.projeto.controles;

import java.util.TreeMap;

import br.ufrj.dcc.comp2.projeto.modelos.Recordes;

/**
 * Controla as informa��es do jogo: placar, vidas e recordes.
 * @author Bruno(Magoo), Eluan(Acre), Diego(Silvio), Davi.
 *
 */
public class ControlaInformacoes {
	private int placar;
	private int placarModular;
	private int vidas;
	private Recordes recordes;
	
	
	public ControlaInformacoes(MarteAtaca ma) {
		this.placar = 0;
		this.placarModular = 0;
		this.vidas = 5;
		this.recordes = ma.getRecordes();
	}
	
	/**
	 * Termina o jogo adicionando o jogador na lista dos que marcaram mais pontos se possivel.
	 * @param nomeDoJogador Nome do jogador que terminou de jogar.
	 * @return True se o jogador foi incluido nos recordes.
	 */
	public boolean fimDoJogo(String nomeDoJogador) {
		if (recordes.adicionarRecorde(placar, nomeDoJogador)) {
			recordes.salvarRecordes();
			return true;
		}
		
		return false;
	}

	/**
	 * Retira uma vida do jogador
	 * @return True se o jogador morreu (n�o tem mais vidas).
	 */
	public boolean perdeVida() {
		vidas--;
		if (vidas == 0) {
			return true;
		}
		return false;
	}
	
	/**
	 * @return N�mero de vidas do jogador.
	 */
	public int getVidas() {
		return vidas;
	}
	
	/**
	 * 
	 * @return Pontos do jogador.
	 */
	public int getPontos() {
		return placar;
	}
	
	/**
	 * Adiciona pontos ao jogador quando ele mata um alien. Caso o jogador fa�a 500 pontos, ganha uma vida.
	 *
	 */
	public void matouAlien() {
		if (vidas <= 0) {
			return;
		}
		
		placar+=10;
		placarModular += 10;
		if (placarModular % 200 == 0) {
			vidas++;
		}
	}
	
	/**
	 * Retira pontos do jogador quando alien passa pela tela.
	 *
	 */
	public void alienPassouDireto(){
		if (vidas <= 0) {
			return;
		}
		
		if(placar >= 2){
			placar -= 2;
		}
		
	}
	
	/**
	 * @return TreeMap com os recordes.
	 */
	public TreeMap<String, Integer> getRecordes() {
		return this.recordes.getRecordes();
	}
	
	/**
	 * @return O objeto que controla os recordes.
	 */
	public Recordes getRecClass(){
		return this.recordes;
	}
}
